JavaScript 代码
class RecentFilesList {
constructor(capacity = 5) {
this.capacity = capacity;
this.list = [];
}
addFile(filePath) {
// 移除已存在的文件
this.removeFile(filePath);
// 添加到列表开头
this.list.unshift(filePath);
// 保持容量
if (this.list.length > this.capacity) {
this.list.pop();
}
}
getRecentFiles() {
return [...this.list];
}
removeFile(filePath) {
const index = this.list.indexOf(filePath);
if (index !== -1) {
this.list.splice(index, 1);
return true;
}
return false;
}
contains(filePath) {
return this.list.includes(filePath);
}
}
// 使用示例
const recentFiles = new RecentFilesList();
recentFiles.addFile("file1.txt");
recentFiles.addFile("file2.txt");
recentFiles.addFile("file3.txt");
recentFiles.addFile("file4.txt");
recentFiles.addFile("file5.txt");
console.log(recentFiles.getRecentFiles()); // ["file5.txt", "file4.txt", "file3.txt", "file2.txt", "file1.txt"]
recentFiles.addFile("file6.txt"); // 超出容量,移除最旧的文件
console.log(recentFiles.getRecentFiles()); // ["file6.txt", "file5.txt", "file4.txt", "file3.txt", "file2.txt"]
recentFiles.addFile("file4.txt"); // 已存在,调整位置
console.log(recentFiles.getRecentFiles()); // ["file4.txt", "file6.txt", "file5.txt", "file3.txt", "file2.txt"]
运行结果
["file5.txt", "file4.txt", "file3.txt", "file2.txt", "file1.txt"]
["file6.txt", "file5.txt", "file4.txt", "file3.txt", "file2.txt"]
["file4.txt", "file6.txt", "file5.txt", "file3.txt", "file2.txt"]